package com.hziee.mail.service;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.hziee.mail.model.SkuInfoEntity;
import com.hziee.mail.model.SkuInfoListEntity;
import com.hziee.mail.util.RedisUtil;
import com.hziee.mail.util.SpringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

/**
 * @author ZX
 */
@Service
public class CartService {


    public Integer addRedis(SkuInfoEntity skuInfoEntity, String userId) {
        //从spring容器里面得到一个对象
        RedisUtil redisUtil = (RedisUtil) SpringUtil.applicationContext.getBean("redisUtil");
        String cartValue = redisUtil.get(userId + "cart");
        SkuInfoListEntity skuInfoListEntity = JSON.parseObject(cartValue, new TypeReference<SkuInfoListEntity>() {
        });
        if (skuInfoListEntity != null) {
            int cartLength = skuInfoListEntity.getItems().size();
            for (int i = 0; i < cartLength; i++) {
                SkuInfoEntity skuInfoEntity1 = skuInfoListEntity.getItems().get(i);
                if (skuInfoEntity1.getGoodsId().equals(skuInfoEntity.getGoodsId())) {
                    skuInfoEntity.setValue(String.valueOf(Integer.valueOf(skuInfoEntity.getValue()) + Integer.valueOf(skuInfoEntity1.getValue())));
                    skuInfoListEntity.getItems().set(i, skuInfoEntity);
                    break;
                } else if (i == cartLength - 1) {
                    skuInfoListEntity.getItems().add(skuInfoEntity);
                }
            }
            redisUtil.set(userId + "cart", JSON.toJSONString(skuInfoListEntity, SerializerFeature.DisableCircularReferenceDetect));
            return skuInfoListEntity.getItems().size();
        } else {
            skuInfoListEntity = new SkuInfoListEntity();
            skuInfoListEntity.getItems().add(skuInfoEntity);
            redisUtil.set(userId + "cart", JSON.toJSONString(skuInfoListEntity, SerializerFeature.DisableCircularReferenceDetect));
            return skuInfoListEntity.getItems().size();
        }
    }
}
